#!/usr/bin/env python

import argparse
import paho.mqtt.client as mqtt

parser = argparse.ArgumentParser(description='simple iot mqqt monitor')

parser.add_argument('--topic', default='devices/#',
                    help='name of topic to monitor')
parser.add_argument('--host', default='localhost',
                    help='hostname of mqtt broker')
parser.add_argument('-p', '--port', metavar='port', default=1883,
                    help='mqtt broker port number')
args = parser.parse_args()

# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.
    client.subscribe(args.topic)

# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    print(msg.topic+": "+str(msg.payload))

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect(args.host, args.port, 60)
#client.connect("iot.eclipse.org", 1883, 60)

# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
client.loop_forever()
